package com.mmaingenieria.MMAGestor.MySQL;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import org.apache.log4j.Logger;

import com.mmaingenieria.MMAGestor.beans.Cliente;
import com.mmaingenieria.MMAGestor.database.MySQLDAOFactory;
import com.mmaingenieria.MMAGestor.interfaces.InterfaceClienteDAO;

public class MySQLClienteDAO implements InterfaceClienteDAO {
	//Construtor
    //*************************************************************************
    public MySQLClienteDAO() {
       
    }
	
    //Metodos que hay que implementar por extender de InterfaceClienteDAO
    //************************************************************************
	public ArrayList<Cliente> getClientes() throws Exception{
		Connection conexion = null;
		try {
			ArrayList<Cliente> listaClientes = null;//creo un arraylist de tipo Clientes			
			String sql = "SELECT cliente_id, razon_social FROM mmagestor.cliente";
			conexion = MySQLDAOFactory.conectar();
            PreparedStatement stmt = conexion.prepareStatement(sql);//preparas la query
            ResultSet resultadoquery = stmt.executeQuery();//realizas la query
            listaClientes = new ArrayList<Cliente>();
            while (resultadoquery.next()) {//recorres el resultado
                listaClientes.add(instanciarCliente(resultadoquery));//por cada recordset lo pasa a objeto cliente y lo a�ades a la lista
            }
            return listaClientes;
        } catch (Exception e) {
        	Logger.getLogger(this.getClass()).error("Excepcion generada en getClientes");
        	throw e;
        } finally {
            MySQLDAOFactory.desconectar(conexion);           
        }        
	}
	
	
	//Metodos
    //*************************************************************************
    public Cliente instanciarCliente(ResultSet rs) {
        Cliente cliente = null;
        try {
            cliente = new Cliente();
            cliente.setId(rs.getInt("cliente_id"));
            cliente.setRazonSocial(rs.getString("razon_social"));            
        } catch (Exception ex) {
        	Logger.getLogger(this.getClass()).error("Excepcion generada en instanciando Cliente");
        	return null;
        }
        return cliente;
    }

}
